import java.util.ArrayList;
import java.util.Date;
import java.util.Random;

import monas.burger.web.model.administrador.Administrador;
import monas.burger.web.model.categoria.Categoria;
import monas.burger.web.model.cliente.Cliente;
import monas.burger.web.model.itempedido.ItemPedido;
import monas.burger.web.model.pedido.Pedido;
import monas.burger.web.model.perfil.Perfil;
import monas.burger.web.model.produto.Produto;
import monas.burger.web.util.Util;

/**
 * 
 */

/**
 * Programa para testar a Infraestrutura do sistema.
 * 
 * @author Henrique Serrat / Jose C M Rodrigues
 * @since 26/10/2014
 * @version 1.0
 */

public class MainInfraestrutura {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Infraestrutura infraestrutura = new Infraestrutura();

		// Perfil

		ArrayList<Perfil> perfis = infraestrutura.getPerfis();

		for (Perfil perfil : perfis) {

			System.out.println(perfil.toString());
		}

		// Administrador

		ArrayList<Administrador> administradores = infraestrutura
				.getAdministradores();

		for (Administrador administrador : administradores) {

			System.out.println(administrador.toString());
		}

		// Cliente

		ArrayList<Cliente> clientes = infraestrutura.getClientes();

		for (Cliente cliente : clientes) {

			System.out.println(cliente.toString());
		}

		// Categoria

		ArrayList<Categoria> categorias = infraestrutura.getCategorias();

		for (Categoria categoria : categorias) {

			System.out.println(categoria.toString());
		}

		// Produto

		ArrayList<Produto> produtos = infraestrutura.getProdutos();

		for (Produto produto : produtos) {

			System.out.println(produto.toString());
		}

		/******* CRIAR PEDIDOS *******/

		Random randomGenerator = new Random(new Date().getTime());

		Pedido pedido = null;

		// Pedido # 1

		pedido = new Pedido(Util.convertStringToDate("17/3/2014"),
				clientes.get(randomGenerator.nextInt(4)));

		pedido.setIdPedido(infraestrutura.getPedidos().size() + 1);

		infraestrutura.getPedidos().add(pedido);

		// Pedido # 2

		pedido = new Pedido(Util.convertStringToDate("20/3/2014"),
				clientes.get(randomGenerator.nextInt(4)));

		pedido.setIdPedido(infraestrutura.getPedidos().size() + 1);

		infraestrutura.getPedidos().add(pedido);

		// Pedido # 3

		pedido = new Pedido(Util.convertStringToDate("8/8/2014"),
				clientes.get(randomGenerator.nextInt(4)));

		pedido.setIdPedido(infraestrutura.getPedidos().size() + 1);

		infraestrutura.getPedidos().add(pedido);

		/******* CRIAR ITENS DOS PEDIDOS *******/

		ArrayList<ItemPedido> itensPedido = null;

		for (Pedido ordered : infraestrutura.getPedidos()) {

			itensPedido = infraestrutura.cardapio();

			for (ItemPedido itemPedido : itensPedido) {

				itemPedido.setPedido(ordered);

				itemPedido.setPreco(itemPedido.getProduto().getPreco());

				itemPedido.setQuantidade(randomGenerator.nextInt(10));

				if (itemPedido.getQuantidade() > 0) {

					infraestrutura.getItensDosPedidos().add(itemPedido);
				}

			}
		}

		/******* IMPRIMIR PEDIDOS *******/

		System.out.println("\n /****** PEDIDOS *****/");

		for (Pedido ordered : infraestrutura.getPedidos()) {

			infraestrutura.imprimir(ordered);
		}

	}

}
